Skip to content

fix: upgrade OpenTUI for renderer stability - #538

Merged
benvinegar merged 1 commit into
mainfrom
fix/issue-525
Jul 14, 2026
Merged

fix: upgrade OpenTUI for renderer stability#538
benvinegar merged 1 commit into
mainfrom
fix/issue-525

Conversation

@benvinegar

Copy link
Copy Markdown
Member

Summary

  • upgrade @opentui/core and @opentui/react to 0.4.3, picking up native-backed text measurement from OpenTUI #1219 to suppress Yoga NaN dimension warnings on Apple Silicon npm installs
  • pick up OpenTUI's renderer lifecycle and culling stability fixes for the Windows end-of-diff crash
  • add PTY coverage for repeated mouse-wheel input after the review stream reaches EOF
  • synchronize Bun and Nix dependency locks and add a patch changeset

Closes #517.
Closes #525.

Testing

  • bun run typecheck
  • bun run lint
  • bun run test
  • bun run test:integration
  • bun run test:tty-smoke
  • bun run build:npm
  • bun run check:pack
  • binary build checks

This PR description was generated by Pi using OpenAI GPT-5.6 Sol

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​opentui/​core@​0.4.2 ⏵ 0.4.385 -1310092 +198100
Updated@​opentui/​react@​0.4.2 ⏵ 0.4.398 +1100100 +198100

View full report

@greptile-apps

greptile-apps Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR upgrades @opentui/core and @opentui/react from 0.4.2 to 0.4.3, picking up upstream fixes for Windows native-renderer crashes on end-of-diff scroll and Yoga NaN dimension warnings on Apple Silicon. All lock files (Bun and Nix) are synchronized and a PTY regression test is added.

  • Dependency bump: @opentui/core and @opentui/react updated to ^0.4.3 in both devDependencies and peerDependencies; transitive bun-ffi-structs moves from 0.2.3 to 0.2.4, and all platform-specific binary hashes are updated consistently across bun.lock and nix/bun.lock.nix.
  • Regression test: A new PTY test scrolls the review pane to EOF, sends 12 additional wheel events (the previously-crashing overscroll path), then verifies content is still visible and that scrolling back up restores the initial view.

Confidence Score: 5/5

Safe to merge — the change is a focused patch-version bump of two packages with no API surface changes, and all lock files are fully synchronized.

The dependency upgrade is narrow in scope (0.4.2 → 0.4.3 patch), both Bun and Nix locks are consistent with the new versions and hashes, peerDependencies are updated in lockstep with devDependencies, and the new PTY test directly exercises the previously-crashing overscroll path. No logic changes outside the test file.

No files require special attention.

Important Files Changed

Filename Overview
package.json Bumps @opentui/core and @opentui/react from ^0.4.2 to ^0.4.3 in both devDependencies and peerDependencies — changes are symmetric and consistent
test/pty/scroll.test.ts Adds a PTY regression test that scrolls to EOF, overscrolls 12 more steps, then scrolls back up — verifying the Windows native-renderer culling/unmount path no longer crashes; follows the same fixture and assertion pattern as the adjacent mouse wheel scrolling test
bun.lock Locks all eight @opentui/core platform binaries and @opentui/react to 0.4.3 with updated content hashes; transitive bun-ffi-structs moves from 0.2.3 to 0.2.4 consistently
nix/bun.lock.nix Mirrors the bun.lock upgrade in Nix fetchurl entries — all eight platform-specific tarballs updated to 0.4.3 with matching sha512 hashes
.changeset/calm-windows-scroll.md Patch changeset for hunkdiff describing the Windows crash and Apple Silicon Yoga NaN warning fixes from the OpenTUI 0.4.3 upgrade

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Launch Hunk PTY] --> B[Wait for UI ready]
    B --> C[scrollDown 30 to EOF]
    C --> D{line18 = 118 visible?}
    D -- yes --> E[Assert line01 not visible]
    E --> F[scrollDown 12 overscroll]
    F --> G{line18 = 118 still visible?}
    G -- yes --> H[Renderer stable - no crash]
    H --> I[scrollUp 30]
    I --> J{line01 = 101 visible?}
    J -- yes --> K[Test passes]
    D -- timeout --> L[Test fails]
    G -- timeout --> L
    J -- timeout --> L
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[Launch Hunk PTY] --> B[Wait for UI ready]
    B --> C[scrollDown 30 to EOF]
    C --> D{line18 = 118 visible?}
    D -- yes --> E[Assert line01 not visible]
    E --> F[scrollDown 12 overscroll]
    F --> G{line18 = 118 still visible?}
    G -- yes --> H[Renderer stable - no crash]
    H --> I[scrollUp 30]
    I --> J{line01 = 101 visible?}
    J -- yes --> K[Test passes]
    D -- timeout --> L[Test fails]
    G -- timeout --> L
    J -- timeout --> L
Loading

Reviews (1): Last reviewed commit: "fix: upgrade OpenTUI for renderer stabil..." | Re-trigger Greptile

@benvinegar
benvinegar merged commit 04ed2b0 into main Jul 14, 2026
9 checks passed
@benvinegar
benvinegar deleted the fix/issue-525 branch July 14, 2026 09:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Crashes while scrolling to the end of diff Yoga warning: Measure function returned an invalid dimension [width=nan, height=nan]

1 participant